package com.mcp.converter.domain.report;

import com.mcp.converter.shared.enums.IncompatibilityType;
import com.mcp.converter.domain.checker.IncompatibilityDetail;

/**
 * 不兼容报告详情类
 * 包含单个不兼容点的详细信息
 */
public class IncompatibilityReportDetail {
    
    /**
     * 不兼容类型
     */
    private IncompatibilityType type;
    
    /**
     * 不兼容点名称
     */
    private String name;
    
    /**
     * 不兼容点值
     */
    private String value;
    
    /**
     * 不兼容原因
     */
    private String reason;
    
    /**
     * 不兼容影响
     */
    private String impact;
    
    /**
     * 转换建议
     */
    private String suggestion;
    
    /**
     * 转换后内容
     */
    private String convertedContent;
    
    /**
     * 是否已转换
     */
    private boolean converted;
    
    /**
     * 严重程度
     */
    private IncompatibilityDetail.Severity severity;
    
    /**
     * 位置信息
     */
    private Position position;
    
    /**
     * 位置类
     */
    public static class Position {
        private int line;
        private int column;
        private int startIndex;
        private int endIndex;
        
        public Position(int line, int column, int startIndex, int endIndex) {
            this.line = line;
            this.column = column;
            this.startIndex = startIndex;
            this.endIndex = endIndex;
        }
        
        public int getLine() {
            return line;
        }
        
        public void setLine(int line) {
            this.line = line;
        }
        
        public int getColumn() {
            return column;
        }
        
        public void setColumn(int column) {
            this.column = column;
        }
        
        public int getStartIndex() {
            return startIndex;
        }
        
        public void setStartIndex(int startIndex) {
            this.startIndex = startIndex;
        }
        
        public int getEndIndex() {
            return endIndex;
        }
        
        public void setEndIndex(int endIndex) {
            this.endIndex = endIndex;
        }
    }
    
    public IncompatibilityReportDetail() {
    }
    
    public IncompatibilityType getType() {
        return type;
    }
    
    public void setType(IncompatibilityType type) {
        this.type = type;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getValue() {
        return value;
    }
    
    public void setValue(String value) {
        this.value = value;
    }
    
    public String getReason() {
        return reason;
    }
    
    public void setReason(String reason) {
        this.reason = reason;
    }
    
    public String getImpact() {
        return impact;
    }
    
    public void setImpact(String impact) {
        this.impact = impact;
    }
    
    public String getSuggestion() {
        return suggestion;
    }
    
    public void setSuggestion(String suggestion) {
        this.suggestion = suggestion;
    }
    
    public String getConvertedContent() {
        return convertedContent;
    }
    
    public void setConvertedContent(String convertedContent) {
        this.convertedContent = convertedContent;
    }
    
    public boolean isConverted() {
        return converted;
    }
    
    public void setConverted(boolean converted) {
        this.converted = converted;
    }
    
    public IncompatibilityDetail.Severity getSeverity() {
        return severity;
    }
    
    public void setSeverity(IncompatibilityDetail.Severity severity) {
        this.severity = severity;
    }
    
    public Position getPosition() {
        return position;
    }
    
    public void setPosition(Position position) {
        this.position = position;
    }
}
